Day 26- ggplot資料視覺化 Part 3(1)- ggplot2 + 地圖
(前言:內個,我只是個剛接觸程式設計的小萌新,如果內文內容、程式碼、統計資料圖寫或畫的不對,還請各位大大指教 Orz)
今天我們來學習ggplot2的地圖繪製功能。今天我們用R來畫一張世界地圖及其他區域地圖,熟悉一下地圖繪圖的基本操作。
首先我們先安裝maps
套件,這份套件有每個國家的經緯度邊界資料(大約10萬筆),如果要呼叫地圖資料的話,使用map_data(“world”)
即可,這邊我們將這筆資料儲存到一個變數上,名稱為wmap
這邊列出wmap
的前10筆資料
可以看到,這份資料有列出經度(long)、緯度(lat)、國家的代號(group)、邊界經緯度代號(order)、區域/國家名稱(region),及分區(subregion)
如果要列出這份地圖涵蓋的國家名稱,可以使用sort(unique(wmap$region))
來完成。
接下來我們先畫一張世界地圖。程式碼如下:
map <- map_data("world", region = unique(wmap$region))
wmap1 <- ggplot(map, aes(x = long, y = lat, group = group)) + geom_polygon(colour = "white")
wmap1
圖片:
可以看到這份程式碼首先先呼叫世界地圖的資料,指定區域為wmap
中的每個國家名稱並儲存至map變數,接下來使用ggplot
函數畫圖,資料為map
資料,美學屬性指定x軸為經度,y軸為緯度,group
則按照wmap
資料中的國家代號繪圖(如果這個沒有指定的話,畫出來的圖會像嘔吐物喔),接下來指定geom
屬性,試過幾次後,我發現ploygon
畫出來的圖效果最好(如果是geom_point
的話,有些國家會看不到,因為點的大小太大。geom_line
畫出來的圖雖然其實也是可以,但是地圖裡會有很奇怪的線條,可能影響整體效果)
接下來來練習畫區域圖,假設今天只要畫日本、柬埔寨、韓國(南韓、北韓)、印尼、蒙古台灣、中國、馬來西亞、泰國、越南、寮國、及印尼的地圖的話,只要把第一行的map_data
中的region
引數改成國家名稱(記得在改之前先檢查一下國家名稱列表)即可,程式碼如下:
map <- map_data("world", region = c("Japan","Laos","Cambodia", "Vietnam", "Malaysia", "Thailand", "Taiwan", "China","South Korea","North Korea","Singapore","Indonesia", "Mongolia"))
wmap1 <- ggplot(map, aes(x = long, y = lat, group = group)) + geom_polygon(colour = "white")
wmap1
圖片:
這樣就好啦ˊˇˋ
如果要加點顏色的話,就只要在geom_polygon
裡面加上fill = 顏色
就好了
明天我們繼續畫地圖吧
參考資料: